# # 简单的成绩判断
# score1 = float(input("请输入语文课程成绩："))
# score2 = float(input("请输入数学课程成绩："))
# score3 = float(input("请输入英语课程成绩："))
# score = [score1, score2, score3]
# total_score = 0
# for s in score:
#     total_score += s
# avg_score = total_score / len(score)
# print(f"总分是：{total_score}, 平均分是:{avg_score}")
# if avg_score >= 60:
#     print("及格")
# else:
#     print("不及格")

# # 使用 while 实现倒计时
# import time
# num = int(input("请输入一个正整数作为起始值："))
# while num > 0:
#     print(num)
#     time.sleep(1)  # 间隔输出，暂停1秒
#     num -= 1
# print("倒计时结束！")

# # 使用 for 计算列表中元素的平方
# numbers = [1, 2, 3, 4, 5]
# numbers_square = []
# for n in numbers:
#     numbers_square.append(n ** 2)
# print(numbers_square)

# # 模拟登录系统
# username = "admin"
# password = "123"
# max_attempt = 3
# attempt = 0
# while attempt < max_attempt:
#     name = input("请输入用户名: ")
#     num = input("请输入密码: ")
#     if name == username and num == password:
#         print("登录成功")
#         break
#     else:
#         print("用户名或密码错误，请重试。")
#     attempt += 1
# if attempt == max_attempt:
#     print("登录失败")

# # 多人分组评分系统
# '''
# 假设有 3 名评委需要给 5 名参赛选手打分（分数范围为 1 到 10）。
# 使用 for 循环依次处理每个评委对选手的评分。
# 使用 while 循环管理整个评分流程，直到所有选手都打分完成。
# 最终，计算每位选手的平均分并显示结果。
# '''
# # 定义参赛评委和选手的数量
# judges = 3
# contestants = 5
# # 用于存储每位选手的总分数
# scores = []
# # 已经打分的选手数量
# contestant_index = 0
# # 使用 while 循环管理评分流程，直到所有选手都打分完成
# while contestant_index < contestants:
#     print(f"现在为选手{contestant_index + 1}打分：")
#     total = 0
#     # 使用 for 循环处理每个评委的评分
#     for judge in range(1, judges + 1):
#         score = int(input(f"评委 {judge}，请为选手{contestant_index + 1}打分 (1-10): "))
#         total += score
#         if 1 <= score <= 10:
#             scores.append(total)
#         else:
#             print("分数无效，请输入 1 到 10 之间的数字。")
#             break
#     # 处理下一位选手
#     contestant_index += 1
# # 计算并显示每位选手的平均分
# print("评分结果：")
# for i in range(contestants):
#     average_score = scores[i] / judges
#     print(f"选手{i+1} 的平均分为：{average_score:.2f}")

# # 图书借阅管理系统
# '''
# 模拟一个图书馆的借阅管理系统。
# 系统包含以下功能：
#   使用深拷贝和浅拷贝复制图书信息并演示修改的影响；
#   检查图书是否在借阅列表中，使用成员运算符 in 和 not in；
#   使用身份运算符 is 和 is not 比较对象是否为同一本书。
# 实现以下场景：
#   借阅列表初始化；
#   添加图书到借阅列表；
#   检查某本书是否已被借阅；
#   复制图书信息并对比深浅拷贝的效果。
# '''
# import copy
#
# # 初始图书列表
# library_books = [
#     {
#         "title": "Python Programming",
#         "author": "John Doe",
#         "id": 101
#     },
#     {
#         "title": "Data Science Basics",
#         "author": "Jane Smith",
#         "id": 102
#     },
#     {
#         "title": "Machine Learning",
#         "author": "Alice Brown",
#         "id": 103
#     }]
# # 添加图书到借阅列表
# book_list = []
# book_list.append(library_books[0])
#
# # 检查某本书是否已被借阅
# check_book = {
#         "title": "Python Programming",
#         "author": "John Doe",
#         "id": 101
#     }
# if check_book in book_list:
#     print(f"{check_book['title']}已被借阅")
# else:
#     print(f"{check_book['title']}未被借阅")
#
# # 复制图书信息并对比深浅拷贝的效果
# books_copy1 = copy.copy(library_books)
# books_copy2 = copy.deepcopy(library_books)
# # 修改
# library_books[0]["title"] = "Python Programming1"
# print(library_books)
# # 比较对象是否为同一本书
# print(books_copy1[0] is library_books[0])
# print(books_copy2[0] is library_books[0])

# 图书借阅管理系统
'''
创建一个图书馆管理系统，请使用函数实现以下功能：
添加图书到馆藏。
借阅图书时，检查是否存在并更新借阅状态。
使用浅拷贝和深拷贝演示借阅对馆藏的影响。
检查某本书是否在借阅列表中，结合成员运算符。
判断是否为同一本书，结合身份运算符。
'''
import copy

# 初始图书馆藏
library_books = [
    {"title": "Python Programming",
        "author": "John Doe",
        "id": 101,
        "available": True},
    {"title": "Data Science Basics",
        "author": "Jane Smith",
        "id": 102,
        "available": True},
    {"title": "Machine Learning",
        "author": "Alice Brown",
        "id": 103,
        "available": True}]
# 添加图书到馆藏。
def add_books(title, author, book_id):
    new_book = {"title": title, "author": author, "id": book_id, "available": True}
    library_books.append(new_book)
    print(f"{title}已添加到馆藏。")

# 借阅图书
def borrow_book(book_id):
    for book in library_books:
        if book["id"] == book_id:
            if book["available"]:
                book["available"] = False
                print(f"{book['title']}成功借出。")
                return book
            else:
                print(f"{book['title']}已被借出。")
    print("未找到该书籍。")

# 使用浅拷贝和深拷贝演示借阅影响
def copy_book(book_id):
    book = borrow_book(book_id)
    # 浅拷贝
    s_copy = copy.copy(book)
    # 深拷贝
    d_copy = copy.deepcopy(book)

    # 修改浅拷贝的可用状态
    print("原始对象:", book)
    print("浅拷贝:", s_copy)
    print("深拷贝:", d_copy)
    print()
    s_copy["available"] = True
    print("原始对象:", book)
    print("浅拷贝:", s_copy)
    print("深拷贝:", d_copy)

# 检查某本书是否在借阅列表中（成员运算符 in）
def in_borrowed(book_id):
    for book in library_books:
        if book["id"] == book_id:
            if book["available"] is True:
                print(f"{book['title']}不在借阅列表中")
            else:
                print(f"{book['title']}在借阅列表中")

# 判断是否为同一本书
def check_book(book1, book2):
    if book1 is book2:
        print("这两本书是同一个对象。")
    else:
        print("这两本书是不同的对象。")

add_books("python", "W", 104)
borrow_book(102)
copy_book(101)
in_borrowed(102)
check_book(library_books[0], library_books[1])


